### プロジェクト16 タイムボム **1. 説明** このプロジェクトでは、面白いタイムボムゲームを体験することができます。 このプロジェクトでは、ドットマトリクスがタイムボムを表し、デジタルチューブが残り時間を表示します。ボタンは爆弾の操作だけでなく、時間設定も可能です。カウントダウンを設定して爆弾を制御し、カウントダウン終了時に爆発します。それに加えて、ブザーが警報として採用されています。 いずれにせよ、複数のセンサーを使ったプログラミングにより、論理的思考の総合力を高めることができます。 **2. フローチャート** ![](media/B1.png) **3. 配線図** ![](media/B2.png) **4. テストコード** 1. 2つの基本ブロックをドラッグします。 ![](media/B3.png) 2. ボタンのピンを「入力(input)」に設定します。 ![](media/B4.png) 3. 「Matrix」から「init matrix display」ブロックを追加し、ピンCSをIO15に設定します。続いて、「brightness」ブロックを値3で追加し、「variable」ブロック(変数タイプをint、名前をitem、初期値を0に設定)を追加します。 ![](media/B5.png) 4. 「Matrix」から「fill color」ブロックをドラッグし、「black」(すべてのLEDを消灯して前の表示をクリア)を選択します。次に、「display image」ブロックを追加してスマイルフェイスを定義します。最後に、表示を更新するためのリフレッシュブロックを置きます。 ![](media/B6.png) 5. 「if」ブロックをドラッグし、条件欄に「interface IO33 button was be pushed?」を入力します。「then」の後に「variable mode」ブロックを追加し、名前をitem、モードを「++」に設定します。 ![](media/B7.png) 6. ステップ5の操作を繰り返しますが、インターフェースをIO32に、モードを「--」に設定します。 ![](media/B8.png) 7. 「if」ブロックをドラッグし、ピンIO26が押されたかを判定します。この「if」内に「repeat」ブロックを追加し、条件を「item = 0」に設定します。 「repeat until」ループ内に「variable mode」ブロックを置き、「item」を「--」に設定します。次に、「Digital tube」から「TM1650 display」ブロックをドラッグし、表示文字列を「variable item」ブロックに設定します。続けて、「buzzer output」ブロックを追加し、ピンIO27の出力をHIGHに設定し、0.5秒の遅延を入れます。最後に同じ操作を繰り返しますが、出力をLOWに設定します。 ![](media/B9.png) 8. もう一つループコードをプログラムし、条件を「interface IO25 button was be pushed?」に設定します。このループ内で実行される処理は以下の通りです。「TM1650 display」ブロックを置き、表示文字列を「variable item」ブロックに設定します。次にステップ4を繰り返しますが、ここでは画像を泣いている顔に設定します。 ![](media/B10.png) 9. 「if then」ブロックをドラッグし、空欄に条件「item > 9999」を入力します。この条件ブロック内に「set item variable by 0」という文を追加します。 ![](media/B11.png) 10. 「Digital tube」から「TM1650 display」ブロックをドラッグし、表示文字列を「variable item」に設定します。同様に、0.2秒の遅延を忘れずに入れます。 ![](media/B12.png) **完成コード:** ![](media/B13.png) **5. テスト結果** 配線を接続しコードをアップロードした後、青ボタンで時間を増やし、緑ボタンで減らし、赤ボタンでリセットします。黄色ボタンを押すとカウントダウンが始まります。カウントダウン終了時に爆弾が爆発します。